const db = require("../db/index")
// 导入 bcrypt 这个包
const bcrypt = require("bcryptjs")
const JWT = require("jsonwebtoken")
const config = require("../config")
exports.regUser = (req, res) => {
    // 1. 接受数据
    const userinfo = req.body
    // if (!userinfo.username || !userinfo.password) {
    //     return res.send({status: 1,message: "用户名或密码不合法"});
    // }
    //  定义 sql 语句，查询用户名是否被占用
    const sqlStr = "select * from ev_users where username=?"
    db.query(sqlStr, userinfo.username, (err, result) => {
        if (err) return res.cc(err)
        if (result.length > 0) return res.cc("用户名被占用，请更换其他用户名!")
        // TODO : 用户名可以使用
        //  调用 bcrypt.hashSync() 对密码进行加密
        userinfo.password = bcrypt.hashSync(userinfo.password, 10)
        const sql = "insert into ev_users set ?"
        db.query(sql, {
            username: userinfo.username,
            password: userinfo.password
        }, (err, result) => {
            if (err) return res.cc(err)
            if (result.affectedRows !== 1) return res.cc("注册用户失败，请稍后再试!")
            res.cc("注册成功!", 0)
        })
    })

}
exports.login = (req, res) => {
    // 1. 接受数据
    const userinfo = req.body
    const sql = "select * from ev_users where username=?"
    db.query(sql, userinfo.username, (err, result) => {
        if (err) return res.cc(err)
        if (result.length !== 1) return res.cc("登录失败")
        //  TODO: 判断密码是否正确
        if (!(bcrypt.compareSync(userinfo.password, result[0].password))){
            return res.cc("密码错误")
        }
        // 生成 JWT 字符串
        const user = { ...result[0], password: '', user_pic: '' }
        const tokenStr = JWT.sign(user, config.jwtSecretKey, { expiresIn: config.expiresIn })
        res.send({
            status: 0,
            message: '登录成功!',
            token:"Bearer " + tokenStr
        })
    })


    // res.send("login OK")
}